{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# sklearn 方式"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 119,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0 1 2]\n",
      "{'boosting_type': 'gbdt', 'class_weight': None, 'colsample_bytree': 1.0, 'importance_type': 'split', 'learning_rate': 0.1, 'max_depth': -1, 'min_child_samples': 20, 'min_child_weight': 0.001, 'min_split_gain': 0.0, 'n_estimators': 1, 'n_jobs': -1, 'num_leaves': 31, 'objective': None, 'random_state': None, 'reg_alpha': 0.0, 'reg_lambda': 0.0, 'silent': True, 'subsample': 1.0, 'subsample_for_bin': 200000, 'subsample_freq': 0}\n",
      "[[5.  2.3 3.3 1. ]\n",
      " [7.4 2.8 6.1 1.9]\n",
      " [6.7 3.3 5.7 2.5]] [1 2 2] [1 2 2]\n",
      "[[0.34627382 0.35338399 0.30034219]\n",
      " [0.34184173 0.28647015 0.37168811]\n",
      " [0.34184173 0.28647015 0.37168811]]\n",
      "0.9111111111111111\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "import lightgbm as lgb\n",
    "from sklearn import metrics\n",
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.datasets import load_iris\n",
    "from sklearn.metrics import accuracy_score\n",
    "from sklearn import tree\n",
    "import graphviz\n",
    "iris = load_iris()\n",
    "x_train, x_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.3)\n",
    "\n",
    "model = lgb.LGBMClassifier(n_estimators=1)\n",
    "model.fit(x_train, y_train)\n",
    "\n",
    "# 获取类别\n",
    "print(model.classes_)\n",
    "\n",
    "# 获取参数\n",
    "print(model.get_params())\n",
    "\n",
    "# 获取预测值\n",
    "y_pred = model.predict(x_test, num_iteration=model.best_iteration_)\n",
    "print(x_test[:3],y_test[:3],y_pred[:3])\n",
    "\n",
    "# 获取预测每个类的概率\n",
    "y_pro = model.predict_proba(x_test, num_iteration=model.best_iteration_)\n",
    "print(y_pro[:3])\n",
    "\n",
    "# 获取准确率\n",
    "accuracy = accuracy_score(y_test,y_pred)\n",
    "print(accuracy)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 93,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n",
       " -->\n",
       "<!-- Title: %3 Pages: 1 -->\n",
       "<svg width=\"462pt\" height=\"104pt\"\n",
       " viewBox=\"0.00 0.00 461.59 104.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 100)\">\n",
       "<title>%3</title>\n",
       "<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-100 457.5894,-100 457.5894,4 -4,4\"/>\n",
       "<!-- split0 -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>split0</title>\n",
       "<polygon fill=\"none\" stroke=\"#000000\" points=\"126,-76 0,-76 0,-40 126,-40 126,-76\"/>\n",
       "<text text-anchor=\"start\" x=\"8\" y=\"-55.3\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">Column_2</text>\n",
       "<text text-anchor=\"start\" x=\"71\" y=\"-55.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> ≤ </text>\n",
       "<text text-anchor=\"start\" x=\"86\" y=\"-55.3\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">3.150</text>\n",
       "</g>\n",
       "<!-- leaf0 -->\n",
       "<g id=\"node2\" class=\"node\">\n",
       "<title>leaf0</title>\n",
       "<ellipse fill=\"none\" stroke=\"#000000\" cx=\"230\" cy=\"-78\" rx=\"59.5901\" ry=\"18\"/>\n",
       "<text text-anchor=\"start\" x=\"192\" y=\"-75.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">leaf 0: </text>\n",
       "<text text-anchor=\"start\" x=\"231\" y=\"-75.3\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">&#45;1.005</text>\n",
       "</g>\n",
       "<!-- split0&#45;&gt;leaf0 -->\n",
       "<g id=\"edge1\" class=\"edge\">\n",
       "<title>split0&#45;&gt;leaf0</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M126.1355,-65.5611C138.4751,-67.0389 151.4465,-68.5924 163.88,-70.0814\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"163.8267,-73.6 174.1719,-71.314 164.6591,-66.6496 163.8267,-73.6\"/>\n",
       "<text text-anchor=\"middle\" x=\"146.5\" y=\"-71.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">yes</text>\n",
       "</g>\n",
       "<!-- split1 -->\n",
       "<g id=\"node3\" class=\"node\">\n",
       "<title>split1</title>\n",
       "<polygon fill=\"none\" stroke=\"#000000\" points=\"293,-56 167,-56 167,-20 293,-20 293,-56\"/>\n",
       "<text text-anchor=\"start\" x=\"175\" y=\"-35.3\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">Column_0</text>\n",
       "<text text-anchor=\"start\" x=\"238\" y=\"-35.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> ≤ </text>\n",
       "<text text-anchor=\"start\" x=\"253\" y=\"-35.3\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">6.550</text>\n",
       "</g>\n",
       "<!-- split0&#45;&gt;split1 -->\n",
       "<g id=\"edge4\" class=\"edge\">\n",
       "<title>split0&#45;&gt;split1</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M126.1355,-50.4389C136.1111,-49.2442 146.4996,-48 156.683,-46.7805\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"157.2624,-50.2362 166.7752,-45.5718 156.4299,-43.2859 157.2624,-50.2362\"/>\n",
       "<text text-anchor=\"middle\" x=\"146.5\" y=\"-51.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">no</text>\n",
       "</g>\n",
       "<!-- leaf1 -->\n",
       "<g id=\"node4\" class=\"node\">\n",
       "<title>leaf1</title>\n",
       "<ellipse fill=\"none\" stroke=\"#000000\" cx=\"393.7947\" cy=\"-58\" rx=\"59.5901\" ry=\"18\"/>\n",
       "<text text-anchor=\"start\" x=\"355.7947\" y=\"-55.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">leaf 1: </text>\n",
       "<text text-anchor=\"start\" x=\"394.7947\" y=\"-55.3\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">&#45;1.230</text>\n",
       "</g>\n",
       "<!-- split1&#45;&gt;leaf1 -->\n",
       "<g id=\"edge2\" class=\"edge\">\n",
       "<title>split1&#45;&gt;leaf1</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M293.3273,-45.7325C304.8158,-47.1353 316.8189,-48.6009 328.3664,-50.0109\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"328.022,-53.4948 338.3725,-51.2327 328.8705,-46.5464 328.022,-53.4948\"/>\n",
       "<text text-anchor=\"middle\" x=\"313.5\" y=\"-52.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">yes</text>\n",
       "</g>\n",
       "<!-- leaf2 -->\n",
       "<g id=\"node5\" class=\"node\">\n",
       "<title>leaf2</title>\n",
       "<ellipse fill=\"none\" stroke=\"#000000\" cx=\"393.7947\" cy=\"-18\" rx=\"59.5901\" ry=\"18\"/>\n",
       "<text text-anchor=\"start\" x=\"355.7947\" y=\"-15.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">leaf 2: </text>\n",
       "<text text-anchor=\"start\" x=\"394.7947\" y=\"-15.3\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">&#45;1.230</text>\n",
       "</g>\n",
       "<!-- split1&#45;&gt;leaf2 -->\n",
       "<g id=\"edge3\" class=\"edge\">\n",
       "<title>split1&#45;&gt;leaf2</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M293.3273,-30.2675C304.8158,-28.8647 316.8189,-27.3991 328.3664,-25.9891\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"328.8705,-29.4536 338.3725,-24.7673 328.022,-22.5052 328.8705,-29.4536\"/>\n",
       "<text text-anchor=\"middle\" x=\"313.5\" y=\"-31.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">no</text>\n",
       "</g>\n",
       "</g>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<graphviz.dot.Digraph at 0x1a16abdc50>"
      ]
     },
     "execution_count": 93,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 绘制决策树，画出其中的第一个\n",
    "lgb.create_tree_digraph(model, tree_index=0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 94,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n",
       " -->\n",
       "<!-- Title: %3 Pages: 1 -->\n",
       "<svg width=\"629pt\" height=\"124pt\"\n",
       " viewBox=\"0.00 0.00 628.59 124.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 120)\">\n",
       "<title>%3</title>\n",
       "<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-120 624.5894,-120 624.5894,4 -4,4\"/>\n",
       "<!-- split0 -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>split0</title>\n",
       "<polygon fill=\"none\" stroke=\"#000000\" points=\"126,-96 0,-96 0,-60 126,-60 126,-96\"/>\n",
       "<text text-anchor=\"start\" x=\"8\" y=\"-75.3\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">Column_3</text>\n",
       "<text text-anchor=\"start\" x=\"71\" y=\"-75.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> ≤ </text>\n",
       "<text text-anchor=\"start\" x=\"86\" y=\"-75.3\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">0.550</text>\n",
       "</g>\n",
       "<!-- leaf0 -->\n",
       "<g id=\"node2\" class=\"node\">\n",
       "<title>leaf0</title>\n",
       "<ellipse fill=\"none\" stroke=\"#000000\" cx=\"230\" cy=\"-98\" rx=\"59.5901\" ry=\"18\"/>\n",
       "<text text-anchor=\"start\" x=\"192\" y=\"-95.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">leaf 0: </text>\n",
       "<text text-anchor=\"start\" x=\"231\" y=\"-95.3\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">&#45;1.230</text>\n",
       "</g>\n",
       "<!-- split0&#45;&gt;leaf0 -->\n",
       "<g id=\"edge1\" class=\"edge\">\n",
       "<title>split0&#45;&gt;leaf0</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M126.1355,-85.5611C138.4751,-87.0389 151.4465,-88.5924 163.88,-90.0814\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"163.8267,-93.6 174.1719,-91.314 164.6591,-86.6496 163.8267,-93.6\"/>\n",
       "<text text-anchor=\"middle\" x=\"146.5\" y=\"-91.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">yes</text>\n",
       "</g>\n",
       "<!-- split1 -->\n",
       "<g id=\"node3\" class=\"node\">\n",
       "<title>split1</title>\n",
       "<polygon fill=\"none\" stroke=\"#000000\" points=\"293,-76 167,-76 167,-40 293,-40 293,-76\"/>\n",
       "<text text-anchor=\"start\" x=\"175\" y=\"-55.3\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">Column_2</text>\n",
       "<text text-anchor=\"start\" x=\"238\" y=\"-55.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> ≤ </text>\n",
       "<text text-anchor=\"start\" x=\"253\" y=\"-55.3\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">4.750</text>\n",
       "</g>\n",
       "<!-- split0&#45;&gt;split1 -->\n",
       "<g id=\"edge6\" class=\"edge\">\n",
       "<title>split0&#45;&gt;split1</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M126.1355,-70.4389C136.1111,-69.2442 146.4996,-68 156.683,-66.7805\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"157.2624,-70.2362 166.7752,-65.5718 156.4299,-63.2859 157.2624,-70.2362\"/>\n",
       "<text text-anchor=\"middle\" x=\"146.5\" y=\"-71.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">no</text>\n",
       "</g>\n",
       "<!-- leaf1 -->\n",
       "<g id=\"node4\" class=\"node\">\n",
       "<title>leaf1</title>\n",
       "<ellipse fill=\"none\" stroke=\"#000000\" cx=\"397\" cy=\"-78\" rx=\"59.5901\" ry=\"18\"/>\n",
       "<text text-anchor=\"start\" x=\"359\" y=\"-75.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">leaf 1: </text>\n",
       "<text text-anchor=\"start\" x=\"398\" y=\"-75.3\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">&#45;1.006</text>\n",
       "</g>\n",
       "<!-- split1&#45;&gt;leaf1 -->\n",
       "<g id=\"edge2\" class=\"edge\">\n",
       "<title>split1&#45;&gt;leaf1</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M293.1355,-65.5611C305.4751,-67.0389 318.4465,-68.5924 330.88,-70.0814\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"330.8267,-73.6 341.1719,-71.314 331.6591,-66.6496 330.8267,-73.6\"/>\n",
       "<text text-anchor=\"middle\" x=\"313.5\" y=\"-71.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">yes</text>\n",
       "</g>\n",
       "<!-- split2 -->\n",
       "<g id=\"node5\" class=\"node\">\n",
       "<title>split2</title>\n",
       "<polygon fill=\"none\" stroke=\"#000000\" points=\"460,-56 334,-56 334,-20 460,-20 460,-56\"/>\n",
       "<text text-anchor=\"start\" x=\"342\" y=\"-35.3\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">Column_3</text>\n",
       "<text text-anchor=\"start\" x=\"405\" y=\"-35.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> ≤ </text>\n",
       "<text text-anchor=\"start\" x=\"420\" y=\"-35.3\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">1.950</text>\n",
       "</g>\n",
       "<!-- split1&#45;&gt;split2 -->\n",
       "<g id=\"edge5\" class=\"edge\">\n",
       "<title>split1&#45;&gt;split2</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M293.1355,-50.4389C303.1111,-49.2442 313.4996,-48 323.683,-46.7805\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"324.2624,-50.2362 333.7752,-45.5718 323.4299,-43.2859 324.2624,-50.2362\"/>\n",
       "<text text-anchor=\"middle\" x=\"313.5\" y=\"-51.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">no</text>\n",
       "</g>\n",
       "<!-- leaf2 -->\n",
       "<g id=\"node6\" class=\"node\">\n",
       "<title>leaf2</title>\n",
       "<ellipse fill=\"none\" stroke=\"#000000\" cx=\"560.7947\" cy=\"-58\" rx=\"59.5901\" ry=\"18\"/>\n",
       "<text text-anchor=\"start\" x=\"522.7947\" y=\"-55.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">leaf 2: </text>\n",
       "<text text-anchor=\"start\" x=\"561.7947\" y=\"-55.3\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">&#45;1.184</text>\n",
       "</g>\n",
       "<!-- split2&#45;&gt;leaf2 -->\n",
       "<g id=\"edge3\" class=\"edge\">\n",
       "<title>split2&#45;&gt;leaf2</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M460.3273,-45.7325C471.8158,-47.1353 483.8189,-48.6009 495.3664,-50.0109\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"495.022,-53.4948 505.3725,-51.2327 495.8705,-46.5464 495.022,-53.4948\"/>\n",
       "<text text-anchor=\"middle\" x=\"480.5\" y=\"-52.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">yes</text>\n",
       "</g>\n",
       "<!-- leaf3 -->\n",
       "<g id=\"node7\" class=\"node\">\n",
       "<title>leaf3</title>\n",
       "<ellipse fill=\"none\" stroke=\"#000000\" cx=\"560.7947\" cy=\"-18\" rx=\"59.5901\" ry=\"18\"/>\n",
       "<text text-anchor=\"start\" x=\"522.7947\" y=\"-15.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">leaf 3: </text>\n",
       "<text text-anchor=\"start\" x=\"561.7947\" y=\"-15.3\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">&#45;1.230</text>\n",
       "</g>\n",
       "<!-- split2&#45;&gt;leaf3 -->\n",
       "<g id=\"edge4\" class=\"edge\">\n",
       "<title>split2&#45;&gt;leaf3</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M460.3273,-30.2675C471.8158,-28.8647 483.8189,-27.3991 495.3664,-25.9891\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"495.8705,-29.4536 505.3725,-24.7673 495.022,-22.5052 495.8705,-29.4536\"/>\n",
       "<text text-anchor=\"middle\" x=\"480.5\" y=\"-31.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">no</text>\n",
       "</g>\n",
       "</g>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<graphviz.dot.Digraph at 0x1a16abdeb8>"
      ]
     },
     "execution_count": 94,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lgb.create_tree_digraph(model, tree_index=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 95,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n",
       " -->\n",
       "<!-- Title: %3 Pages: 1 -->\n",
       "<svg width=\"462pt\" height=\"164pt\"\n",
       " viewBox=\"0.00 0.00 461.59 164.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 160)\">\n",
       "<title>%3</title>\n",
       "<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-160 457.5894,-160 457.5894,4 -4,4\"/>\n",
       "<!-- split0 -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>split0</title>\n",
       "<polygon fill=\"none\" stroke=\"#000000\" points=\"126,-96 0,-96 0,-60 126,-60 126,-96\"/>\n",
       "<text text-anchor=\"start\" x=\"8\" y=\"-75.3\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">Column_2</text>\n",
       "<text text-anchor=\"start\" x=\"71\" y=\"-75.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> ≤ </text>\n",
       "<text text-anchor=\"start\" x=\"86\" y=\"-75.3\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">4.750</text>\n",
       "</g>\n",
       "<!-- split2 -->\n",
       "<g id=\"node2\" class=\"node\">\n",
       "<title>split2</title>\n",
       "<polygon fill=\"none\" stroke=\"#000000\" points=\"293,-116 167,-116 167,-80 293,-80 293,-116\"/>\n",
       "<text text-anchor=\"start\" x=\"175\" y=\"-95.3\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">Column_0</text>\n",
       "<text text-anchor=\"start\" x=\"238\" y=\"-95.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> ≤ </text>\n",
       "<text text-anchor=\"start\" x=\"253\" y=\"-95.3\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">5.150</text>\n",
       "</g>\n",
       "<!-- split0&#45;&gt;split2 -->\n",
       "<g id=\"edge3\" class=\"edge\">\n",
       "<title>split0&#45;&gt;split2</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M126.1355,-85.5611C136.1111,-86.7558 146.4996,-88 156.683,-89.2195\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"156.4299,-92.7141 166.7752,-90.4282 157.2624,-85.7638 156.4299,-92.7141\"/>\n",
       "<text text-anchor=\"middle\" x=\"146.5\" y=\"-91.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">yes</text>\n",
       "</g>\n",
       "<!-- split1 -->\n",
       "<g id=\"node5\" class=\"node\">\n",
       "<title>split1</title>\n",
       "<polygon fill=\"none\" stroke=\"#000000\" points=\"293,-76 167,-76 167,-40 293,-40 293,-76\"/>\n",
       "<text text-anchor=\"start\" x=\"175\" y=\"-55.3\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">Column_3</text>\n",
       "<text text-anchor=\"start\" x=\"238\" y=\"-55.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> ≤ </text>\n",
       "<text text-anchor=\"start\" x=\"253\" y=\"-55.3\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">1.950</text>\n",
       "</g>\n",
       "<!-- split0&#45;&gt;split1 -->\n",
       "<g id=\"edge6\" class=\"edge\">\n",
       "<title>split0&#45;&gt;split1</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M126.1355,-70.4389C136.1111,-69.2442 146.4996,-68 156.683,-66.7805\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"157.2624,-70.2362 166.7752,-65.5718 156.4299,-63.2859 157.2624,-70.2362\"/>\n",
       "<text text-anchor=\"middle\" x=\"146.5\" y=\"-71.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">no</text>\n",
       "</g>\n",
       "<!-- leaf0 -->\n",
       "<g id=\"node3\" class=\"node\">\n",
       "<title>leaf0</title>\n",
       "<ellipse fill=\"none\" stroke=\"#000000\" cx=\"393.7947\" cy=\"-138\" rx=\"59.5901\" ry=\"18\"/>\n",
       "<text text-anchor=\"start\" x=\"355.7947\" y=\"-135.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">leaf 0: </text>\n",
       "<text text-anchor=\"start\" x=\"394.7947\" y=\"-135.3\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">&#45;1.070</text>\n",
       "</g>\n",
       "<!-- split2&#45;&gt;leaf0 -->\n",
       "<g id=\"edge1\" class=\"edge\">\n",
       "<title>split2&#45;&gt;leaf0</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M293.3273,-113.465C307.743,-116.9855 322.9689,-120.7038 337.0882,-124.1518\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"336.6013,-127.6357 347.1462,-126.6081 338.262,-120.8355 336.6013,-127.6357\"/>\n",
       "<text text-anchor=\"middle\" x=\"313.5\" y=\"-123.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">yes</text>\n",
       "</g>\n",
       "<!-- leaf3 -->\n",
       "<g id=\"node4\" class=\"node\">\n",
       "<title>leaf3</title>\n",
       "<ellipse fill=\"none\" stroke=\"#000000\" cx=\"393.7947\" cy=\"-98\" rx=\"59.5901\" ry=\"18\"/>\n",
       "<text text-anchor=\"start\" x=\"355.7947\" y=\"-95.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">leaf 3: </text>\n",
       "<text text-anchor=\"start\" x=\"394.7947\" y=\"-95.3\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">&#45;1.070</text>\n",
       "</g>\n",
       "<!-- split2&#45;&gt;leaf3 -->\n",
       "<g id=\"edge2\" class=\"edge\">\n",
       "<title>split2&#45;&gt;leaf3</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M293.3273,-98C303.3199,-98 313.7018,-98 323.8345,-98\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"323.8607,-101.5001 333.8606,-98 323.8606,-94.5001 323.8607,-101.5001\"/>\n",
       "<text text-anchor=\"middle\" x=\"313.5\" y=\"-101.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">no</text>\n",
       "</g>\n",
       "<!-- leaf1 -->\n",
       "<g id=\"node6\" class=\"node\">\n",
       "<title>leaf1</title>\n",
       "<ellipse fill=\"none\" stroke=\"#000000\" cx=\"393.7947\" cy=\"-58\" rx=\"59.5901\" ry=\"18\"/>\n",
       "<text text-anchor=\"start\" x=\"355.7947\" y=\"-55.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">leaf 1: </text>\n",
       "<text text-anchor=\"start\" x=\"394.7947\" y=\"-55.3\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">&#45;0.899</text>\n",
       "</g>\n",
       "<!-- split1&#45;&gt;leaf1 -->\n",
       "<g id=\"edge4\" class=\"edge\">\n",
       "<title>split1&#45;&gt;leaf1</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M293.3273,-58C303.3199,-58 313.7018,-58 323.8345,-58\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"323.8607,-61.5001 333.8606,-58 323.8606,-54.5001 323.8607,-61.5001\"/>\n",
       "<text text-anchor=\"middle\" x=\"313.5\" y=\"-61.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">yes</text>\n",
       "</g>\n",
       "<!-- leaf2 -->\n",
       "<g id=\"node7\" class=\"node\">\n",
       "<title>leaf2</title>\n",
       "<ellipse fill=\"none\" stroke=\"#000000\" cx=\"393.7947\" cy=\"-18\" rx=\"59.5901\" ry=\"18\"/>\n",
       "<text text-anchor=\"start\" x=\"355.7947\" y=\"-15.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">leaf 2: </text>\n",
       "<text text-anchor=\"start\" x=\"394.7947\" y=\"-15.3\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">&#45;0.856</text>\n",
       "</g>\n",
       "<!-- split1&#45;&gt;leaf2 -->\n",
       "<g id=\"edge5\" class=\"edge\">\n",
       "<title>split1&#45;&gt;leaf2</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M293.3273,-42.535C307.743,-39.0145 322.9689,-35.2962 337.0882,-31.8482\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"338.262,-35.1645 347.1462,-29.3919 336.6013,-28.3643 338.262,-35.1645\"/>\n",
       "<text text-anchor=\"middle\" x=\"313.5\" y=\"-42.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">no</text>\n",
       "</g>\n",
       "</g>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<graphviz.dot.Digraph at 0x1a16abd400>"
      ]
     },
     "execution_count": 95,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lgb.create_tree_digraph(model, tree_index=2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 108,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.2895581997337758\n",
      "0.2895581997337758\n",
      "0.4208836005324485\n"
     ]
    }
   ],
   "source": [
    "# 数据测试\n",
    "from math import *\n",
    "#x=[-1.005,-1.23,-1.07]\n",
    "x=[-1.23,-1.23,-0.856]\n",
    "s=np.sum([exp(item) for item in x])\n",
    "for item in x:\n",
    "    print(exp(item) / s)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 109,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "13.997034818715369\n"
     ]
    },
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n",
       " -->\n",
       "<!-- Title: %3 Pages: 1 -->\n",
       "<svg width=\"1202pt\" height=\"364pt\"\n",
       " viewBox=\"0.00 0.00 1201.69 364.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 360)\">\n",
       "<title>%3</title>\n",
       "<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-360 1197.6886,-360 1197.6886,4 -4,4\"/>\n",
       "<!-- split0 -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>split0</title>\n",
       "<polygon fill=\"none\" stroke=\"#000000\" points=\"126,-122 0,-122 0,-86 126,-86 126,-122\"/>\n",
       "<text text-anchor=\"start\" x=\"8\" y=\"-101.3\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">Column_5</text>\n",
       "<text text-anchor=\"start\" x=\"71\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> ≤ </text>\n",
       "<text text-anchor=\"start\" x=\"86\" y=\"-101.3\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">6.972</text>\n",
       "</g>\n",
       "<!-- split1 -->\n",
       "<g id=\"node2\" class=\"node\">\n",
       "<title>split1</title>\n",
       "<polygon fill=\"none\" stroke=\"#000000\" points=\"307,-142 167,-142 167,-106 307,-106 307,-142\"/>\n",
       "<text text-anchor=\"start\" x=\"175\" y=\"-121.3\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">Column_12</text>\n",
       "<text text-anchor=\"start\" x=\"245\" y=\"-121.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> ≤ </text>\n",
       "<text text-anchor=\"start\" x=\"260\" y=\"-121.3\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">14.795</text>\n",
       "</g>\n",
       "<!-- split0&#45;&gt;split1 -->\n",
       "<g id=\"edge25\" class=\"edge\">\n",
       "<title>split0&#45;&gt;split1</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M126.3102,-111.277C136.2215,-112.4163 146.5769,-113.6065 156.806,-114.7823\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"156.6376,-118.2859 166.9718,-115.9508 157.437,-111.3317 156.6376,-118.2859\"/>\n",
       "<text text-anchor=\"middle\" x=\"146.5\" y=\"-117.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">yes</text>\n",
       "</g>\n",
       "<!-- split2 -->\n",
       "<g id=\"node27\" class=\"node\">\n",
       "<title>split2</title>\n",
       "<polygon fill=\"none\" stroke=\"#000000\" points=\"300,-102 174,-102 174,-66 300,-66 300,-102\"/>\n",
       "<text text-anchor=\"start\" x=\"182\" y=\"-81.3\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">Column_5</text>\n",
       "<text text-anchor=\"start\" x=\"245\" y=\"-81.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> ≤ </text>\n",
       "<text text-anchor=\"start\" x=\"260\" y=\"-81.3\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">7.472</text>\n",
       "</g>\n",
       "<!-- split0&#45;&gt;split2 -->\n",
       "<g id=\"edge28\" class=\"edge\">\n",
       "<title>split0&#45;&gt;split2</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M126.3102,-96.723C138.3805,-95.3356 151.1094,-93.8725 163.4667,-92.4521\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"164.202,-95.8907 173.7369,-91.2716 163.4026,-88.9365 164.202,-95.8907\"/>\n",
       "<text text-anchor=\"middle\" x=\"146.5\" y=\"-98.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">no</text>\n",
       "</g>\n",
       "<!-- split3 -->\n",
       "<g id=\"node3\" class=\"node\">\n",
       "<title>split3</title>\n",
       "<polygon fill=\"none\" stroke=\"#000000\" points=\"481,-224 348,-224 348,-188 481,-188 481,-224\"/>\n",
       "<text text-anchor=\"start\" x=\"356\" y=\"-203.3\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">Column_12</text>\n",
       "<text text-anchor=\"start\" x=\"426\" y=\"-203.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> ≤ </text>\n",
       "<text text-anchor=\"start\" x=\"441\" y=\"-203.3\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">9.845</text>\n",
       "</g>\n",
       "<!-- split1&#45;&gt;split3 -->\n",
       "<g id=\"edge17\" class=\"edge\">\n",
       "<title>split1&#45;&gt;split3</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M276.393,-142.1985C302.9121,-154.4495 338.0521,-170.6832 366.249,-183.7094\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"364.9769,-186.9771 375.5229,-187.9937 367.9126,-180.6224 364.9769,-186.9771\"/>\n",
       "<text text-anchor=\"middle\" x=\"327.5\" y=\"-172.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">yes</text>\n",
       "</g>\n",
       "<!-- split4 -->\n",
       "<g id=\"node20\" class=\"node\">\n",
       "<title>split4</title>\n",
       "<polygon fill=\"none\" stroke=\"#000000\" points=\"477.5,-142 351.5,-142 351.5,-106 477.5,-106 477.5,-142\"/>\n",
       "<text text-anchor=\"start\" x=\"359.5\" y=\"-121.3\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">Column_4</text>\n",
       "<text text-anchor=\"start\" x=\"422.5\" y=\"-121.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> ≤ </text>\n",
       "<text text-anchor=\"start\" x=\"437.5\" y=\"-121.3\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">0.607</text>\n",
       "</g>\n",
       "<!-- split1&#45;&gt;split4 -->\n",
       "<g id=\"edge24\" class=\"edge\">\n",
       "<title>split1&#45;&gt;split4</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M307.1527,-124C318.3556,-124 329.9724,-124 341.2451,-124\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"341.479,-127.5001 351.479,-124 341.4789,-120.5001 341.479,-127.5001\"/>\n",
       "<text text-anchor=\"middle\" x=\"327.5\" y=\"-127.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">no</text>\n",
       "</g>\n",
       "<!-- split5 -->\n",
       "<g id=\"node4\" class=\"node\">\n",
       "<title>split5</title>\n",
       "<polygon fill=\"none\" stroke=\"#000000\" points=\"655,-276 529,-276 529,-240 655,-240 655,-276\"/>\n",
       "<text text-anchor=\"start\" x=\"537\" y=\"-255.3\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">Column_5</text>\n",
       "<text text-anchor=\"start\" x=\"600\" y=\"-255.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> ≤ </text>\n",
       "<text text-anchor=\"start\" x=\"615\" y=\"-255.3\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">6.535</text>\n",
       "</g>\n",
       "<!-- split3&#45;&gt;split5 -->\n",
       "<g id=\"edge9\" class=\"edge\">\n",
       "<title>split3&#45;&gt;split5</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M476.0827,-224.0411C490.5389,-228.2762 506.0594,-232.823 520.8944,-237.1691\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"519.9454,-240.5381 530.5261,-239.9908 521.9135,-233.8204 519.9454,-240.5381\"/>\n",
       "<text text-anchor=\"middle\" x=\"501.5\" y=\"-236.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">yes</text>\n",
       "</g>\n",
       "<!-- split11 -->\n",
       "<g id=\"node13\" class=\"node\">\n",
       "<title>split11</title>\n",
       "<polygon fill=\"none\" stroke=\"#000000\" points=\"662,-224 522,-224 522,-188 662,-188 662,-224\"/>\n",
       "<text text-anchor=\"start\" x=\"530\" y=\"-203.3\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">Column_10</text>\n",
       "<text text-anchor=\"start\" x=\"600\" y=\"-203.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> ≤ </text>\n",
       "<text text-anchor=\"start\" x=\"615\" y=\"-203.3\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">17.850</text>\n",
       "</g>\n",
       "<!-- split3&#45;&gt;split11 -->\n",
       "<g id=\"edge16\" class=\"edge\">\n",
       "<title>split3&#45;&gt;split11</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M481.0995,-206C491.0596,-206 501.4174,-206 511.626,-206\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"511.7647,-209.5001 521.7647,-206 511.7646,-202.5001 511.7647,-209.5001\"/>\n",
       "<text text-anchor=\"middle\" x=\"501.5\" y=\"-209.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">no</text>\n",
       "</g>\n",
       "<!-- split7 -->\n",
       "<g id=\"node5\" class=\"node\">\n",
       "<title>split7</title>\n",
       "<polygon fill=\"none\" stroke=\"#000000\" points=\"839.5,-316 713.5,-316 713.5,-280 839.5,-280 839.5,-316\"/>\n",
       "<text text-anchor=\"start\" x=\"721.5\" y=\"-295.3\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">Column_7</text>\n",
       "<text text-anchor=\"start\" x=\"784.5\" y=\"-295.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> ≤ </text>\n",
       "<text text-anchor=\"start\" x=\"799.5\" y=\"-295.3\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">4.245</text>\n",
       "</g>\n",
       "<!-- split5&#45;&gt;split7 -->\n",
       "<g id=\"edge5\" class=\"edge\">\n",
       "<title>split5&#45;&gt;split7</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M655.2363,-271.7098C670.7857,-275.0809 687.5595,-278.7175 703.5268,-282.1793\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"702.8318,-285.6098 713.3463,-284.3081 704.315,-278.7687 702.8318,-285.6098\"/>\n",
       "<text text-anchor=\"middle\" x=\"682.5\" y=\"-282.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">yes</text>\n",
       "</g>\n",
       "<!-- split8 -->\n",
       "<g id=\"node10\" class=\"node\">\n",
       "<title>split8</title>\n",
       "<polygon fill=\"none\" stroke=\"#000000\" points=\"843,-276 710,-276 710,-240 843,-240 843,-276\"/>\n",
       "<text text-anchor=\"start\" x=\"718\" y=\"-255.3\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">Column_12</text>\n",
       "<text text-anchor=\"start\" x=\"788\" y=\"-255.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> ≤ </text>\n",
       "<text text-anchor=\"start\" x=\"803\" y=\"-255.3\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">5.945</text>\n",
       "</g>\n",
       "<!-- split5&#45;&gt;split8 -->\n",
       "<g id=\"edge8\" class=\"edge\">\n",
       "<title>split5&#45;&gt;split8</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M655.2363,-258C669.56,-258 684.9227,-258 699.7368,-258\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"699.8857,-261.5001 709.8857,-258 699.8856,-254.5001 699.8857,-261.5001\"/>\n",
       "<text text-anchor=\"middle\" x=\"682.5\" y=\"-261.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">no</text>\n",
       "</g>\n",
       "<!-- leaf0 -->\n",
       "<g id=\"node6\" class=\"node\">\n",
       "<title>leaf0</title>\n",
       "<ellipse fill=\"none\" stroke=\"#000000\" cx=\"957.5\" cy=\"-338\" rx=\"56.59\" ry=\"18\"/>\n",
       "<text text-anchor=\"start\" x=\"922\" y=\"-335.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">leaf 0: </text>\n",
       "<text text-anchor=\"start\" x=\"961\" y=\"-335.3\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">0.331</text>\n",
       "</g>\n",
       "<!-- split7&#45;&gt;leaf0 -->\n",
       "<g id=\"edge1\" class=\"edge\">\n",
       "<title>split7&#45;&gt;leaf0</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M839.5509,-311.9339C859.5333,-316.3499 881.4878,-321.2017 900.9814,-325.5097\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"900.4078,-328.9673 910.9275,-327.7077 901.9184,-322.1322 900.4078,-328.9673\"/>\n",
       "<text text-anchor=\"middle\" x=\"870.5\" y=\"-323.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">yes</text>\n",
       "</g>\n",
       "<!-- split10 -->\n",
       "<g id=\"node7\" class=\"node\">\n",
       "<title>split10</title>\n",
       "<polygon fill=\"none\" stroke=\"#000000\" points=\"1020.5,-316 894.5,-316 894.5,-280 1020.5,-280 1020.5,-316\"/>\n",
       "<text text-anchor=\"start\" x=\"902.5\" y=\"-295.3\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">Column_5</text>\n",
       "<text text-anchor=\"start\" x=\"965.5\" y=\"-295.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> ≤ </text>\n",
       "<text text-anchor=\"start\" x=\"980.5\" y=\"-295.3\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">6.153</text>\n",
       "</g>\n",
       "<!-- split7&#45;&gt;split10 -->\n",
       "<g id=\"edge4\" class=\"edge\">\n",
       "<title>split7&#45;&gt;split10</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M839.5509,-298C853.9746,-298 869.4258,-298 884.2373,-298\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"884.3687,-301.5001 894.3687,-298 884.3687,-294.5001 884.3687,-301.5001\"/>\n",
       "<text text-anchor=\"middle\" x=\"870.5\" y=\"-301.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">no</text>\n",
       "</g>\n",
       "<!-- leaf8 -->\n",
       "<g id=\"node8\" class=\"node\">\n",
       "<title>leaf8</title>\n",
       "<ellipse fill=\"none\" stroke=\"#000000\" cx=\"1129.3443\" cy=\"-318\" rx=\"59.5901\" ry=\"18\"/>\n",
       "<text text-anchor=\"start\" x=\"1091.3443\" y=\"-315.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">leaf 8: </text>\n",
       "<text text-anchor=\"start\" x=\"1130.3443\" y=\"-315.3\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">&#45;0.175</text>\n",
       "</g>\n",
       "<!-- split10&#45;&gt;leaf8 -->\n",
       "<g id=\"edge2\" class=\"edge\">\n",
       "<title>split10&#45;&gt;leaf8</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M1020.5127,-305.3337C1034.4643,-306.9574 1049.2853,-308.6824 1063.352,-310.3195\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1063.1006,-313.8138 1073.4382,-311.4934 1063.9099,-306.8607 1063.1006,-313.8138\"/>\n",
       "<text text-anchor=\"middle\" x=\"1044.5\" y=\"-312.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">yes</text>\n",
       "</g>\n",
       "<!-- leaf11 -->\n",
       "<g id=\"node9\" class=\"node\">\n",
       "<title>leaf11</title>\n",
       "<ellipse fill=\"none\" stroke=\"#000000\" cx=\"1129.3443\" cy=\"-278\" rx=\"61.1893\" ry=\"18\"/>\n",
       "<text text-anchor=\"start\" x=\"1090.3443\" y=\"-275.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">leaf 11: </text>\n",
       "<text text-anchor=\"start\" x=\"1136.3443\" y=\"-275.3\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">0.081</text>\n",
       "</g>\n",
       "<!-- split10&#45;&gt;leaf11 -->\n",
       "<g id=\"edge3\" class=\"edge\">\n",
       "<title>split10&#45;&gt;leaf11</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M1020.5127,-290.6663C1034.0235,-289.0939 1048.3496,-287.4265 1062.0165,-285.8359\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1062.7864,-289.27 1072.3147,-284.6374 1061.9771,-282.3169 1062.7864,-289.27\"/>\n",
       "<text text-anchor=\"middle\" x=\"1044.5\" y=\"-291.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">no</text>\n",
       "</g>\n",
       "<!-- leaf6 -->\n",
       "<g id=\"node11\" class=\"node\">\n",
       "<title>leaf6</title>\n",
       "<ellipse fill=\"none\" stroke=\"#000000\" cx=\"957.5\" cy=\"-258\" rx=\"56.59\" ry=\"18\"/>\n",
       "<text text-anchor=\"start\" x=\"922\" y=\"-255.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">leaf 6: </text>\n",
       "<text text-anchor=\"start\" x=\"961\" y=\"-255.3\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">0.608</text>\n",
       "</g>\n",
       "<!-- split8&#45;&gt;leaf6 -->\n",
       "<g id=\"edge6\" class=\"edge\">\n",
       "<title>split8&#45;&gt;leaf6</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M843.1266,-258C858.6717,-258 875.2288,-258 890.778,-258\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"890.8298,-261.5001 900.8298,-258 890.8297,-254.5001 890.8298,-261.5001\"/>\n",
       "<text text-anchor=\"middle\" x=\"870.5\" y=\"-261.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">yes</text>\n",
       "</g>\n",
       "<!-- leaf9 -->\n",
       "<g id=\"node12\" class=\"node\">\n",
       "<title>leaf9</title>\n",
       "<ellipse fill=\"none\" stroke=\"#000000\" cx=\"957.5\" cy=\"-218\" rx=\"56.59\" ry=\"18\"/>\n",
       "<text text-anchor=\"start\" x=\"922\" y=\"-215.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">leaf 9: </text>\n",
       "<text text-anchor=\"start\" x=\"961\" y=\"-215.3\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">0.290</text>\n",
       "</g>\n",
       "<!-- split8&#45;&gt;leaf9 -->\n",
       "<g id=\"edge7\" class=\"edge\">\n",
       "<title>split8&#45;&gt;leaf9</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M843.1266,-243.2759C862.0925,-239.0845 882.565,-234.5602 900.8754,-230.5137\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"901.793,-233.8955 910.8021,-228.32 900.2824,-227.0604 901.793,-233.8955\"/>\n",
       "<text text-anchor=\"middle\" x=\"870.5\" y=\"-242.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">no</text>\n",
       "</g>\n",
       "<!-- leaf4 -->\n",
       "<g id=\"node14\" class=\"node\">\n",
       "<title>leaf4</title>\n",
       "<ellipse fill=\"none\" stroke=\"#000000\" cx=\"776.5\" cy=\"-218\" rx=\"59.5901\" ry=\"18\"/>\n",
       "<text text-anchor=\"start\" x=\"738.5\" y=\"-215.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">leaf 4: </text>\n",
       "<text text-anchor=\"start\" x=\"777.5\" y=\"-215.3\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">&#45;0.100</text>\n",
       "</g>\n",
       "<!-- split11&#45;&gt;leaf4 -->\n",
       "<g id=\"edge10\" class=\"edge\">\n",
       "<title>split11&#45;&gt;leaf4</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M662.0146,-210.5538C677.0063,-211.5289 692.831,-212.5581 707.7735,-213.53\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"707.7501,-217.0358 717.9562,-214.1923 708.2045,-210.0505 707.7501,-217.0358\"/>\n",
       "<text text-anchor=\"middle\" x=\"682.5\" y=\"-215.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">yes</text>\n",
       "</g>\n",
       "<!-- split12 -->\n",
       "<g id=\"node15\" class=\"node\">\n",
       "<title>split12</title>\n",
       "<polygon fill=\"none\" stroke=\"#000000\" points=\"850,-196 703,-196 703,-160 850,-160 850,-196\"/>\n",
       "<text text-anchor=\"start\" x=\"711\" y=\"-175.3\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">Column_11</text>\n",
       "<text text-anchor=\"start\" x=\"781\" y=\"-175.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> ≤ </text>\n",
       "<text text-anchor=\"start\" x=\"796\" y=\"-175.3\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">380.565</text>\n",
       "</g>\n",
       "<!-- split11&#45;&gt;split12 -->\n",
       "<g id=\"edge15\" class=\"edge\">\n",
       "<title>split11&#45;&gt;split12</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M662.0146,-195.3745C672.0303,-193.8545 682.4178,-192.2781 692.6657,-190.7228\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"693.4864,-194.1384 702.848,-189.1775 692.436,-187.2177 693.4864,-194.1384\"/>\n",
       "<text text-anchor=\"middle\" x=\"682.5\" y=\"-196.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">no</text>\n",
       "</g>\n",
       "<!-- leaf12 -->\n",
       "<g id=\"node16\" class=\"node\">\n",
       "<title>leaf12</title>\n",
       "<ellipse fill=\"none\" stroke=\"#000000\" cx=\"957.5\" cy=\"-178\" rx=\"64.189\" ry=\"18\"/>\n",
       "<text text-anchor=\"start\" x=\"916\" y=\"-175.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">leaf 12: </text>\n",
       "<text text-anchor=\"start\" x=\"962\" y=\"-175.3\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">&#45;0.367</text>\n",
       "</g>\n",
       "<!-- split12&#45;&gt;leaf12 -->\n",
       "<g id=\"edge11\" class=\"edge\">\n",
       "<title>split12&#45;&gt;leaf12</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M850.1196,-178C860.8742,-178 871.9584,-178 882.7355,-178\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"882.9533,-181.5001 892.9533,-178 882.9533,-174.5001 882.9533,-181.5001\"/>\n",
       "<text text-anchor=\"middle\" x=\"870.5\" y=\"-181.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">yes</text>\n",
       "</g>\n",
       "<!-- split13 -->\n",
       "<g id=\"node17\" class=\"node\">\n",
       "<title>split13</title>\n",
       "<polygon fill=\"none\" stroke=\"#000000\" points=\"1024,-156 891,-156 891,-120 1024,-120 1024,-156\"/>\n",
       "<text text-anchor=\"start\" x=\"899\" y=\"-135.3\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">Column_6</text>\n",
       "<text text-anchor=\"start\" x=\"962\" y=\"-135.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> ≤ </text>\n",
       "<text text-anchor=\"start\" x=\"977\" y=\"-135.3\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">77.350</text>\n",
       "</g>\n",
       "<!-- split12&#45;&gt;split13 -->\n",
       "<g id=\"edge14\" class=\"edge\">\n",
       "<title>split12&#45;&gt;split13</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M850.1196,-161.7305C860.355,-159.4685 870.889,-157.1406 881.1726,-154.8679\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"881.9284,-158.2854 890.9376,-152.7099 880.4179,-151.4503 881.9284,-158.2854\"/>\n",
       "<text text-anchor=\"middle\" x=\"870.5\" y=\"-162.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">no</text>\n",
       "</g>\n",
       "<!-- leaf13 -->\n",
       "<g id=\"node18\" class=\"node\">\n",
       "<title>leaf13</title>\n",
       "<ellipse fill=\"none\" stroke=\"#000000\" cx=\"1129.3443\" cy=\"-158\" rx=\"64.189\" ry=\"18\"/>\n",
       "<text text-anchor=\"start\" x=\"1087.8443\" y=\"-155.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">leaf 13: </text>\n",
       "<text text-anchor=\"start\" x=\"1133.8443\" y=\"-155.3\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">&#45;0.161</text>\n",
       "</g>\n",
       "<!-- split13&#45;&gt;leaf13 -->\n",
       "<g id=\"edge12\" class=\"edge\">\n",
       "<title>split13&#45;&gt;leaf13</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M1024.4316,-145.7898C1036.0209,-147.1386 1048.0955,-148.5439 1059.7536,-149.9007\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1059.5311,-153.3984 1069.8687,-151.078 1060.3404,-146.4453 1059.5311,-153.3984\"/>\n",
       "<text text-anchor=\"middle\" x=\"1044.5\" y=\"-152.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">yes</text>\n",
       "</g>\n",
       "<!-- leaf14 -->\n",
       "<g id=\"node19\" class=\"node\">\n",
       "<title>leaf14</title>\n",
       "<ellipse fill=\"none\" stroke=\"#000000\" cx=\"1129.3443\" cy=\"-118\" rx=\"64.189\" ry=\"18\"/>\n",
       "<text text-anchor=\"start\" x=\"1087.8443\" y=\"-115.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">leaf 14: </text>\n",
       "<text text-anchor=\"start\" x=\"1133.8443\" y=\"-115.3\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">&#45;0.294</text>\n",
       "</g>\n",
       "<!-- split13&#45;&gt;leaf14 -->\n",
       "<g id=\"edge13\" class=\"edge\">\n",
       "<title>split13&#45;&gt;leaf14</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M1024.4316,-130.2102C1036.0209,-128.8614 1048.0955,-127.4561 1059.7536,-126.0993\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1060.3404,-129.5547 1069.8687,-124.922 1059.5311,-122.6016 1060.3404,-129.5547\"/>\n",
       "<text text-anchor=\"middle\" x=\"1044.5\" y=\"-131.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">no</text>\n",
       "</g>\n",
       "<!-- split9 -->\n",
       "<g id=\"node21\" class=\"node\">\n",
       "<title>split9</title>\n",
       "<polygon fill=\"none\" stroke=\"#000000\" points=\"662,-142 522,-142 522,-106 662,-106 662,-142\"/>\n",
       "<text text-anchor=\"start\" x=\"530\" y=\"-121.3\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">Column_10</text>\n",
       "<text text-anchor=\"start\" x=\"600\" y=\"-121.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> ≤ </text>\n",
       "<text text-anchor=\"start\" x=\"615\" y=\"-121.3\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">20.150</text>\n",
       "</g>\n",
       "<!-- split4&#45;&gt;split9 -->\n",
       "<g id=\"edge20\" class=\"edge\">\n",
       "<title>split4&#45;&gt;split9</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M477.5796,-124C488.6777,-124 500.3617,-124 511.8516,-124\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"511.8792,-127.5001 521.8792,-124 511.8791,-120.5001 511.8792,-127.5001\"/>\n",
       "<text text-anchor=\"middle\" x=\"501.5\" y=\"-127.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">yes</text>\n",
       "</g>\n",
       "<!-- split6 -->\n",
       "<g id=\"node24\" class=\"node\">\n",
       "<title>split6</title>\n",
       "<polygon fill=\"none\" stroke=\"#000000\" points=\"662,-76 522,-76 522,-40 662,-40 662,-76\"/>\n",
       "<text text-anchor=\"start\" x=\"530\" y=\"-55.3\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">Column_12</text>\n",
       "<text text-anchor=\"start\" x=\"600\" y=\"-55.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"> ≤ </text>\n",
       "<text text-anchor=\"start\" x=\"615\" y=\"-55.3\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">19.645</text>\n",
       "</g>\n",
       "<!-- split4&#45;&gt;split6 -->\n",
       "<g id=\"edge23\" class=\"edge\">\n",
       "<title>split4&#45;&gt;split6</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M469.7417,-105.9971C473.5603,-104.6689 477.3425,-103.3287 481,-102 499.9975,-95.0988 520.626,-87.0717 538.8871,-79.7775\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"540.2229,-83.0128 548.1995,-76.0398 537.6154,-76.5166 540.2229,-83.0128\"/>\n",
       "<text text-anchor=\"middle\" x=\"501.5\" y=\"-100.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">no</text>\n",
       "</g>\n",
       "<!-- leaf2 -->\n",
       "<g id=\"node22\" class=\"node\">\n",
       "<title>leaf2</title>\n",
       "<ellipse fill=\"none\" stroke=\"#000000\" cx=\"776.5\" cy=\"-138\" rx=\"59.5901\" ry=\"18\"/>\n",
       "<text text-anchor=\"start\" x=\"738.5\" y=\"-135.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">leaf 2: </text>\n",
       "<text text-anchor=\"start\" x=\"777.5\" y=\"-135.3\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">&#45;0.275</text>\n",
       "</g>\n",
       "<!-- split9&#45;&gt;leaf2 -->\n",
       "<g id=\"edge18\" class=\"edge\">\n",
       "<title>split9&#45;&gt;leaf2</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M662.0146,-129.3128C677.0891,-130.4566 693.0059,-131.6644 708.0211,-132.8038\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"708.0145,-136.3132 718.2507,-133.58 708.5442,-129.3333 708.0145,-136.3132\"/>\n",
       "<text text-anchor=\"middle\" x=\"682.5\" y=\"-134.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">yes</text>\n",
       "</g>\n",
       "<!-- leaf10 -->\n",
       "<g id=\"node23\" class=\"node\">\n",
       "<title>leaf10</title>\n",
       "<ellipse fill=\"none\" stroke=\"#000000\" cx=\"776.5\" cy=\"-98\" rx=\"64.189\" ry=\"18\"/>\n",
       "<text text-anchor=\"start\" x=\"735\" y=\"-95.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">leaf 10: </text>\n",
       "<text text-anchor=\"start\" x=\"781\" y=\"-95.3\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">&#45;0.562</text>\n",
       "</g>\n",
       "<!-- split9&#45;&gt;leaf10 -->\n",
       "<g id=\"edge19\" class=\"edge\">\n",
       "<title>split9&#45;&gt;leaf10</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M662.0146,-114.1334C677.2548,-111.9858 693.3559,-109.7168 708.5158,-107.5804\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"709.4248,-110.987 718.8386,-106.1257 708.448,-104.0555 709.4248,-110.987\"/>\n",
       "<text text-anchor=\"middle\" x=\"682.5\" y=\"-115.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">no</text>\n",
       "</g>\n",
       "<!-- leaf5 -->\n",
       "<g id=\"node25\" class=\"node\">\n",
       "<title>leaf5</title>\n",
       "<ellipse fill=\"none\" stroke=\"#000000\" cx=\"776.5\" cy=\"-58\" rx=\"59.5901\" ry=\"18\"/>\n",
       "<text text-anchor=\"start\" x=\"738.5\" y=\"-55.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">leaf 5: </text>\n",
       "<text text-anchor=\"start\" x=\"777.5\" y=\"-55.3\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">&#45;0.684</text>\n",
       "</g>\n",
       "<!-- split6&#45;&gt;leaf5 -->\n",
       "<g id=\"edge21\" class=\"edge\">\n",
       "<title>split6&#45;&gt;leaf5</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M662.0146,-58C676.452,-58 691.662,-58 706.1125,-58\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"706.4787,-61.5001 716.4786,-58 706.4786,-54.5001 706.4787,-61.5001\"/>\n",
       "<text text-anchor=\"middle\" x=\"682.5\" y=\"-61.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">yes</text>\n",
       "</g>\n",
       "<!-- leaf7 -->\n",
       "<g id=\"node26\" class=\"node\">\n",
       "<title>leaf7</title>\n",
       "<ellipse fill=\"none\" stroke=\"#000000\" cx=\"776.5\" cy=\"-18\" rx=\"59.5901\" ry=\"18\"/>\n",
       "<text text-anchor=\"start\" x=\"738.5\" y=\"-15.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">leaf 7: </text>\n",
       "<text text-anchor=\"start\" x=\"777.5\" y=\"-15.3\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">&#45;1.079</text>\n",
       "</g>\n",
       "<!-- split6&#45;&gt;leaf7 -->\n",
       "<g id=\"edge22\" class=\"edge\">\n",
       "<title>split6&#45;&gt;leaf7</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M662.0146,-42.8207C680.3361,-38.8485 699.9018,-34.6067 717.5807,-30.7738\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"718.7167,-34.1089 727.7481,-28.5695 717.2335,-27.2679 718.7167,-34.1089\"/>\n",
       "<text text-anchor=\"middle\" x=\"682.5\" y=\"-44.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">no</text>\n",
       "</g>\n",
       "<!-- leaf1 -->\n",
       "<g id=\"node28\" class=\"node\">\n",
       "<title>leaf1</title>\n",
       "<ellipse fill=\"none\" stroke=\"#000000\" cx=\"414.5\" cy=\"-84\" rx=\"56.59\" ry=\"18\"/>\n",
       "<text text-anchor=\"start\" x=\"379\" y=\"-81.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">leaf 1: </text>\n",
       "<text text-anchor=\"start\" x=\"418\" y=\"-81.3\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">0.861</text>\n",
       "</g>\n",
       "<!-- split2&#45;&gt;leaf1 -->\n",
       "<g id=\"edge26\" class=\"edge\">\n",
       "<title>split2&#45;&gt;leaf1</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M300.0796,-84C315.5286,-84 332.1131,-84 347.7287,-84\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"347.8289,-87.5001 357.8289,-84 347.8288,-80.5001 347.8289,-87.5001\"/>\n",
       "<text text-anchor=\"middle\" x=\"327.5\" y=\"-87.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">yes</text>\n",
       "</g>\n",
       "<!-- leaf3 -->\n",
       "<g id=\"node29\" class=\"node\">\n",
       "<title>leaf3</title>\n",
       "<ellipse fill=\"none\" stroke=\"#000000\" cx=\"414.5\" cy=\"-44\" rx=\"56.59\" ry=\"18\"/>\n",
       "<text text-anchor=\"start\" x=\"379\" y=\"-41.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">leaf 3: </text>\n",
       "<text text-anchor=\"start\" x=\"418\" y=\"-41.3\" font-family=\"Times,serif\" font-weight=\"bold\" font-size=\"14.00\" fill=\"#000000\">2.004</text>\n",
       "</g>\n",
       "<!-- split2&#45;&gt;leaf3 -->\n",
       "<g id=\"edge27\" class=\"edge\">\n",
       "<title>split2&#45;&gt;leaf3</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M300.0796,-69.7849C318.9968,-65.5219 339.6164,-60.8752 358.0751,-56.7155\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"359.0972,-60.073 368.0831,-54.4601 357.5583,-53.2442 359.0972,-60.073\"/>\n",
       "<text text-anchor=\"middle\" x=\"327.5\" y=\"-69.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">no</text>\n",
       "</g>\n",
       "</g>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<graphviz.dot.Digraph at 0x1a16bf8c88>"
      ]
     },
     "execution_count": 109,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.datasets import load_boston\n",
    "from sklearn.metrics import mean_squared_error\n",
    "X,y = load_boston(return_X_y=True) # 波士顿房价\n",
    "x_train, x_test, y_train, y_test = train_test_split(X, y)\n",
    "\n",
    "model = lgb.LGBMRegressor()\n",
    "model.fit(x_train, y_train)\n",
    "\n",
    "y_pred = model.predict(x_test, num_iteration=model.best_iteration_)\n",
    "\n",
    "mse = mean_squared_error(y_test,y_pred)\n",
    "print(mse)\n",
    "\n",
    "# 绘制决策树，画出其中的第一个\n",
    "lgb.create_tree_digraph(model, tree_index=1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 原生方式"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "开始训练...\n",
      "[10]\tvalid_0's auc: 1\n",
      "[20]\tvalid_0's auc: 1\n",
      "[30]\tvalid_0's auc: 1\n",
      "[40]\tvalid_0's auc: 1\n",
      "[50]\tvalid_0's auc: 1\n",
      "[60]\tvalid_0's auc: 1\n",
      "[70]\tvalid_0's auc: 1\n",
      "[80]\tvalid_0's auc: 1\n",
      "[90]\tvalid_0's auc: 1\n",
      "[100]\tvalid_0's auc: 1\n",
      "画出训练结果...\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "画特征重要性排序...\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "import lightgbm as lgb\n",
    "from sklearn import metrics\n",
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.datasets import load_iris\n",
    "from sklearn.metrics import accuracy_score\n",
    "from sklearn import tree\n",
    "import graphviz\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "iris = load_iris() \n",
    "x_train, x_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.3)\n",
    "# 导入到lightgbm矩阵\n",
    "lgb_train = lgb.Dataset(x_train, y_train)\n",
    "lgb_test = lgb.Dataset(x_test, y_test, reference=lgb_train)\n",
    "\n",
    "\n",
    "# 设置参数\n",
    "params = {\n",
    "    'num_leaves': 5,\n",
    "    'metric': ('auc', 'logloss'),#可以设置多个评价指标\n",
    "    'verbose': 0\n",
    "}\n",
    "\n",
    "evals_result = {}  #记录训练结果所用\n",
    "\n",
    "print('开始训练...')\n",
    "\n",
    "# train\n",
    "gbm = lgb.train(params,\n",
    "                lgb_train,\n",
    "                num_boost_round=100,\n",
    "                valid_sets=lgb_test,\n",
    "                evals_result=evals_result,#非常重要的参数,一定要明确设置\n",
    "                verbose_eval=10)\n",
    "\n",
    "print('画出训练结果...')\n",
    "ax = lgb.plot_metric(evals_result, metric='auc')#metric的值与之前的params里面的值对应\n",
    "plt.show()\n",
    "\n",
    "print('画特征重要性排序...')\n",
    "ax = lgb.plot_importance(gbm, max_num_features=10)#max_features表示最多展示出前10个重要性特征，可以自行设置\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 117,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[Text(167.4, 163.07999999999998, 'X[2] <= 2.45\\nentropy = 0.666\\nsamples = 105\\nvalue = [0.343, 0.333, 0.324]'),\n",
       " Text(83.7, 54.360000000000014, 'entropy = 0.0\\nsamples = 36\\nvalue = [0.343, 0.0, 0.0]'),\n",
       " Text(251.10000000000002, 54.360000000000014, 'entropy = 0.5\\nsamples = 69\\nvalue = [0.0, 0.333, 0.324]')]"
      ]
     },
     "execution_count": 117,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python [conda env:root] *",
   "language": "python",
   "name": "conda-root-py"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.0"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
